/* Produced by ./codegen.sh on Sun, 18 May 2025 06:47:08 +0000 */

static const int16_t terminfo_cap_indexes[] = {
    66, // kf1 (TB_CAP_F1)
    68, // kf2 (TB_CAP_F2)
    69, // kf3 (TB_CAP_F3)
    70, // kf4 (TB_CAP_F4)
    71, // kf5 (TB_CAP_F5)
    72, // kf6 (TB_CAP_F6)
    73, // kf7 (TB_CAP_F7)
    74, // kf8 (TB_CAP_F8)
    75, // kf9 (TB_CAP_F9)
    67, // kf10 (TB_CAP_F10)
    216, // kf11 (TB_CAP_F11)
    217, // kf12 (TB_CAP_F12)
    77, // kich1 (TB_CAP_INSERT)
    59, // kdch1 (TB_CAP_DELETE)
    76, // khome (TB_CAP_HOME)
    164, // kend (TB_CAP_END)
    82, // kpp (TB_CAP_PGUP)
    81, // knp (TB_CAP_PGDN)
    87, // kcuu1 (TB_CAP_ARROW_UP)
    61, // kcud1 (TB_CAP_ARROW_DOWN)
    79, // kcub1 (TB_CAP_ARROW_LEFT)
    83, // kcuf1 (TB_CAP_ARROW_RIGHT)
    148, // kcbt (TB_CAP_BACK_TAB)
    28, // smcup (TB_CAP_ENTER_CA)
    40, // rmcup (TB_CAP_EXIT_CA)
    16, // cnorm (TB_CAP_SHOW_CURSOR)
    13, // civis (TB_CAP_HIDE_CURSOR)
    5, // clear (TB_CAP_CLEAR_SCREEN)
    39, // sgr0 (TB_CAP_SGR0)
    36, // smul (TB_CAP_UNDERLINE)
    27, // bold (TB_CAP_BOLD)
    26, // blink (TB_CAP_BLINK)
    311, // sitm (TB_CAP_ITALIC)
    34, // rev (TB_CAP_REVERSE)
    89, // smkx (TB_CAP_ENTER_KEYPAD)
    88, // rmkx (TB_CAP_EXIT_KEYPAD)
    30, // dim (TB_CAP_DIM)
    32, // invis (TB_CAP_INVISIBLE)
};

// xterm
static const char *xterm_caps[] = {
    "\033OP", // kf1 (TB_CAP_F1)
    "\033OQ", // kf2 (TB_CAP_F2)
    "\033OR", // kf3 (TB_CAP_F3)
    "\033OS", // kf4 (TB_CAP_F4)
    "\033[15~", // kf5 (TB_CAP_F5)
    "\033[17~", // kf6 (TB_CAP_F6)
    "\033[18~", // kf7 (TB_CAP_F7)
    "\033[19~", // kf8 (TB_CAP_F8)
    "\033[20~", // kf9 (TB_CAP_F9)
    "\033[21~", // kf10 (TB_CAP_F10)
    "\033[23~", // kf11 (TB_CAP_F11)
    "\033[24~", // kf12 (TB_CAP_F12)
    "\033[2~", // kich1 (TB_CAP_INSERT)
    "\033[3~", // kdch1 (TB_CAP_DELETE)
    "\033OH", // khome (TB_CAP_HOME)
    "\033OF", // kend (TB_CAP_END)
    "\033[5~", // kpp (TB_CAP_PGUP)
    "\033[6~", // knp (TB_CAP_PGDN)
    "\033OA", // kcuu1 (TB_CAP_ARROW_UP)
    "\033OB", // kcud1 (TB_CAP_ARROW_DOWN)
    "\033OD", // kcub1 (TB_CAP_ARROW_LEFT)
    "\033OC", // kcuf1 (TB_CAP_ARROW_RIGHT)
    "\033[Z", // kcbt (TB_CAP_BACK_TAB)
    "\033[?1049h\033[22;0;0t", // smcup (TB_CAP_ENTER_CA)
    "\033[?1049l\033[23;0;0t", // rmcup (TB_CAP_EXIT_CA)
    "\033[?12l\033[?25h", // cnorm (TB_CAP_SHOW_CURSOR)
    "\033[?25l", // civis (TB_CAP_HIDE_CURSOR)
    "\033[H\033[2J", // clear (TB_CAP_CLEAR_SCREEN)
    "\033(B\033[m", // sgr0 (TB_CAP_SGR0)
    "\033[4m", // smul (TB_CAP_UNDERLINE)
    "\033[1m", // bold (TB_CAP_BOLD)
    "\033[5m", // blink (TB_CAP_BLINK)
    "\033[3m", // sitm (TB_CAP_ITALIC)
    "\033[7m", // rev (TB_CAP_REVERSE)
    "\033[?1h\033=", // smkx (TB_CAP_ENTER_KEYPAD)
    "\033[?1l\033>", // rmkx (TB_CAP_EXIT_KEYPAD)
    "\033[2m", // dim (TB_CAP_DIM)
    "\033[8m", // invis (TB_CAP_INVISIBLE)
};

// xterm-256color
static const char *xterm_256color_caps[] = {
    "\033OP", // kf1 (TB_CAP_F1)
    "\033OQ", // kf2 (TB_CAP_F2)
    "\033OR", // kf3 (TB_CAP_F3)
    "\033OS", // kf4 (TB_CAP_F4)
    "\033[15~", // kf5 (TB_CAP_F5)
    "\033[17~", // kf6 (TB_CAP_F6)
    "\033[18~", // kf7 (TB_CAP_F7)
    "\033[19~", // kf8 (TB_CAP_F8)
    "\033[20~", // kf9 (TB_CAP_F9)
    "\033[21~", // kf10 (TB_CAP_F10)
    "\033[23~", // kf11 (TB_CAP_F11)
    "\033[24~", // kf12 (TB_CAP_F12)
    "\033[2~", // kich1 (TB_CAP_INSERT)
    "\033[3~", // kdch1 (TB_CAP_DELETE)
    "\033OH", // khome (TB_CAP_HOME)
    "\033OF", // kend (TB_CAP_END)
    "\033[5~", // kpp (TB_CAP_PGUP)
    "\033[6~", // knp (TB_CAP_PGDN)
    "\033OA", // kcuu1 (TB_CAP_ARROW_UP)
    "\033OB", // kcud1 (TB_CAP_ARROW_DOWN)
    "\033OD", // kcub1 (TB_CAP_ARROW_LEFT)
    "\033OC", // kcuf1 (TB_CAP_ARROW_RIGHT)
    "\033[Z", // kcbt (TB_CAP_BACK_TAB)
    "\033[?1049h\033[22;0;0t", // smcup (TB_CAP_ENTER_CA)
    "\033[?1049l\033[23;0;0t", // rmcup (TB_CAP_EXIT_CA)
    "\033[?12l\033[?25h", // cnorm (TB_CAP_SHOW_CURSOR)
    "\033[?25l", // civis (TB_CAP_HIDE_CURSOR)
    "\033[H\033[2J", // clear (TB_CAP_CLEAR_SCREEN)
    "\033(B\033[m", // sgr0 (TB_CAP_SGR0)
    "\033[4m", // smul (TB_CAP_UNDERLINE)
    "\033[1m", // bold (TB_CAP_BOLD)
    "\033[5m", // blink (TB_CAP_BLINK)
    "\033[3m", // sitm (TB_CAP_ITALIC)
    "\033[7m", // rev (TB_CAP_REVERSE)
    "\033[?1h\033=", // smkx (TB_CAP_ENTER_KEYPAD)
    "\033[?1l\033>", // rmkx (TB_CAP_EXIT_KEYPAD)
    "\033[2m", // dim (TB_CAP_DIM)
    "\033[8m", // invis (TB_CAP_INVISIBLE)
};

// linux
static const char *linux_caps[] = {
    "\033[[A", // kf1 (TB_CAP_F1)
    "\033[[B", // kf2 (TB_CAP_F2)
    "\033[[C", // kf3 (TB_CAP_F3)
    "\033[[D", // kf4 (TB_CAP_F4)
    "\033[[E", // kf5 (TB_CAP_F5)
    "\033[17~", // kf6 (TB_CAP_F6)
    "\033[18~", // kf7 (TB_CAP_F7)
    "\033[19~", // kf8 (TB_CAP_F8)
    "\033[20~", // kf9 (TB_CAP_F9)
    "\033[21~", // kf10 (TB_CAP_F10)
    "\033[23~", // kf11 (TB_CAP_F11)
    "\033[24~", // kf12 (TB_CAP_F12)
    "\033[2~", // kich1 (TB_CAP_INSERT)
    "\033[3~", // kdch1 (TB_CAP_DELETE)
    "\033[1~", // khome (TB_CAP_HOME)
    "\033[4~", // kend (TB_CAP_END)
    "\033[5~", // kpp (TB_CAP_PGUP)
    "\033[6~", // knp (TB_CAP_PGDN)
    "\033[A", // kcuu1 (TB_CAP_ARROW_UP)
    "\033[B", // kcud1 (TB_CAP_ARROW_DOWN)
    "\033[D", // kcub1 (TB_CAP_ARROW_LEFT)
    "\033[C", // kcuf1 (TB_CAP_ARROW_RIGHT)
    "\033\011", // kcbt (TB_CAP_BACK_TAB)
    "", // smcup (TB_CAP_ENTER_CA)
    "", // rmcup (TB_CAP_EXIT_CA)
    "\033[?25h\033[?0c", // cnorm (TB_CAP_SHOW_CURSOR)
    "\033[?25l\033[?1c", // civis (TB_CAP_HIDE_CURSOR)
    "\033[H\033[J", // clear (TB_CAP_CLEAR_SCREEN)
    "\033[m\017", // sgr0 (TB_CAP_SGR0)
    "\033[4m", // smul (TB_CAP_UNDERLINE)
    "\033[1m", // bold (TB_CAP_BOLD)
    "\033[5m", // blink (TB_CAP_BLINK)
    "", // sitm (TB_CAP_ITALIC)
    "\033[7m", // rev (TB_CAP_REVERSE)
    "", // smkx (TB_CAP_ENTER_KEYPAD)
    "", // rmkx (TB_CAP_EXIT_KEYPAD)
    "\033[2m", // dim (TB_CAP_DIM)
    "", // invis (TB_CAP_INVISIBLE)
};

// screen
static const char *screen_caps[] = {
    "\033OP", // kf1 (TB_CAP_F1)
    "\033OQ", // kf2 (TB_CAP_F2)
    "\033OR", // kf3 (TB_CAP_F3)
    "\033OS", // kf4 (TB_CAP_F4)
    "\033[15~", // kf5 (TB_CAP_F5)
    "\033[17~", // kf6 (TB_CAP_F6)
    "\033[18~", // kf7 (TB_CAP_F7)
    "\033[19~", // kf8 (TB_CAP_F8)
    "\033[20~", // kf9 (TB_CAP_F9)
    "\033[21~", // kf10 (TB_CAP_F10)
    "\033[23~", // kf11 (TB_CAP_F11)
    "\033[24~", // kf12 (TB_CAP_F12)
    "\033[2~", // kich1 (TB_CAP_INSERT)
    "\033[3~", // kdch1 (TB_CAP_DELETE)
    "\033[1~", // khome (TB_CAP_HOME)
    "\033[4~", // kend (TB_CAP_END)
    "\033[5~", // kpp (TB_CAP_PGUP)
    "\033[6~", // knp (TB_CAP_PGDN)
    "\033OA", // kcuu1 (TB_CAP_ARROW_UP)
    "\033OB", // kcud1 (TB_CAP_ARROW_DOWN)
    "\033OD", // kcub1 (TB_CAP_ARROW_LEFT)
    "\033OC", // kcuf1 (TB_CAP_ARROW_RIGHT)
    "\033[Z", // kcbt (TB_CAP_BACK_TAB)
    "\033[?1049h", // smcup (TB_CAP_ENTER_CA)
    "\033[?1049l", // rmcup (TB_CAP_EXIT_CA)
    "\033[34h\033[?25h", // cnorm (TB_CAP_SHOW_CURSOR)
    "\033[?25l", // civis (TB_CAP_HIDE_CURSOR)
    "\033[H\033[J", // clear (TB_CAP_CLEAR_SCREEN)
    "\033[m\017", // sgr0 (TB_CAP_SGR0)
    "\033[4m", // smul (TB_CAP_UNDERLINE)
    "\033[1m", // bold (TB_CAP_BOLD)
    "\033[5m", // blink (TB_CAP_BLINK)
    "", // sitm (TB_CAP_ITALIC)
    "\033[7m", // rev (TB_CAP_REVERSE)
    "\033[?1h\033=", // smkx (TB_CAP_ENTER_KEYPAD)
    "\033[?1l\033>", // rmkx (TB_CAP_EXIT_KEYPAD)
    "\033[2m", // dim (TB_CAP_DIM)
    "", // invis (TB_CAP_INVISIBLE)
};

static struct {
    const char *name;
    const char **caps;
    const char *alias;
} builtin_terms[] = {
    { "xterm", xterm_caps, "" },
    { "xterm-256color", xterm_256color_caps, "" },
    { "linux", linux_caps, "" },
    { "screen", screen_caps, "tmux" },
    { NULL, NULL, NULL },
};

